perm filename UNDER.FAI[SYS,HE] blob
sn#098477 filedate 1974-04-25 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 INTERNAL UNDERFLOW
C00006 ENDMK
Cā;
INTERNAL UNDERFLOW
EXTERNAL JOBTPC,JOBAPR
TITLE UNDERFLOW
OPDEF ERROR [5B8]
;The parameter to underflow controls the various messages:
;the 01 bit turns on floating underflow,
;the 02 bit turns on floating overflow
;the 04 bit truns on zero divide
;the 10 bit turns on fixed overflow
UNDERF: MOVEI 2,10
JFCL 17,.+1; CLEAR ANY PREVIOUSLY SET FLAGS
SKIPN 1,-1(17); CHANGED FROM SKIPE BECAUSE SENSE OF FLAG WAS WRONG
SETZ 2,
MOVE 3,[XWD -4,UNDFLG]
LP: SETZM (3)
TRNE 1,1
SETOM (3) ;ENABLE ERROR MESSAGE ON BIT=1
LSH 1,-1
AOBJN 3,LP
SUB 17,[(2)2]
MOVEI 1,FLTOV
MOVEM 1,JOBAPR
CALLI 2,16 ;SET APR FLAGS
MOVE 1,2(17)
TLZ 1,440140 ;CLEAR PREV FLAGS
JRST 2,@1 ;RETURN
FLTOV: MOVEM 1,SAVE1
MOVE 1,JOBTPC
TLNN 1,100 ; is it a floating underflow?
JRST OV ;no
MOVE 1,-1(1) ;get opcode which caused it
TLNN 1,40000 ;test for standard flt pt opcode
TLZ 1,2000 ;change for FSC
DPB 1,[POINT 29,.+2,35] ;modify the SETZ
MOVE 1,SAVE1 ;restore ACs
SETZ 0, ;zero ac and/or memory
MOVEM 1,SAVE1
SKIPN UNDFLG
JRST WO ;dont print message
MOVE 1,BP1
JSR NUMOUT
OUTSTR MESS1
WO: MOVE 1,JOBTPC
TLZ 1,440140 ;zero the error bits
MOVEM 1,JOBTPC
MOVE 1,SAVE1
JRST 2,@JOBTPC ;return
OV: TLNN 1,40000 ;was it a floating overflow?
JRST ZDIV ;no
SKIPN FOVFLG
JRST WO ;dont print flt over message
MOVE 1,BP2
JSR NUMOUT
ERROR 1,MESS2
JRST WO
ZDIV: TLNN 1,40 ;zero divide?
JRST NOTIN ;no
SKIPN ZDFLG
JRST WO ;dont print zero divide message
MOVE 1,BP4
JSR NUMOUT
ERROR 1,MESS4
JRST WO
NOTIN: SKIPN OVFLG
JRST WO ;dont print fixed pt overflow message
MOVE 1,BP3
JSR NUMOUT
ERROR 1,MESS3
JRST WO
NUMOUT: 0
MOVEM 1,PTR
MOVEM 2,SAVE2
MOVEI 2,6
MOVE 1,JOBTPC
HRLZI 1,-1(1)
L1: ROT 1,3
IORI 1,60
IDPB 1,PTR
HLRI 1,
SOJG 2,L1
MOVE 2,SAVE2
JRST @NUMOUT
PTR: 0
UNDFLG: 0
FOVFLG: 0
ZDFLG: 0
OVFLG: 0
SAVE1: 0
SAVE2: 0
BP1: POINT 7,MESS1+6,20
BP2: POINT 7,MESS2+6,13
BP3: POINT 7,MESS3+4,20
BP4: POINT 7,MESS4+5,13
MESS1: ASCIZ /FLOATING UNDERFLOW OCCURED, PC = 000000
/
MESS2: ASCIZ/FLOATING OVERFLOW OCCURED, PC = 000000/
MESS3: ASCIZ/OVERFLOW OCCURED, PC = 000000/
MESS4: ASCIZ /ZERO DIVIDE OCCURED, PC = 000000/
END